﻿Imports System.Data.SqlClient
Imports System.IO
Public Class frmAlmacen
    Dim FechaCalculo As DateTime

    Private Sub frmAlmacen_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        'Cierra el SDK
        frmMain.statusActividad.Text = "Cerrando SDK de AdminPAQ..."
        Application.DoEvents()

        Try
            SDK_AdminPAQ.fCierraEmpresa()
            SDK_AdminPAQ.fTerminaSDK()
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Aviso")
            MsgBox("No se pudo cerrar el SDK de AdminPAQ", MsgBoxStyle.Exclamation, "Aviso")
        End Try

        frmMain.statusActividad.Text = ""
        Application.DoEvents()
    End Sub

    Private Sub frmAlmacen_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ToolStrip1.Cursor = Cursors.Hand
        ToolStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.System

        txtFolio.Text = 0
        txtAdminPAQ.Text = 0


        CargaFamilias()
        CargaAlmacenes()

        AbreSDK()


    End Sub
    Sub CargaAlmacenes()
        lstAlmacen.Items.Clear()


        Dim cnConn As New SqlConnection
        cnConn.ConnectionString = CitraConnection

        Dim cmdBuscar As New SqlCommand
        cmdBuscar.Connection = cnConn
        cmdBuscar.CommandText = "SELECT CNOMBREA01 FROM MGW10003 WHERE UPPER(CNOMBREA01) LIKE '%REFACCIONES%'"

        Dim rdBuscar As SqlDataReader

        cnConn.Open()
        rdBuscar = cmdBuscar.ExecuteReader

        lstAlmacen.Items.Add("Seleccionar Almacén...")

        Do While rdBuscar.Read
            lstAlmacen.Items.Add(rdBuscar("CNOMBREA01"))
        Loop

        lstAlmacen.SelectedIndex = 0
    End Sub
    Sub CargaFamilias()
        lstFamilia.Items.Clear()

        Dim cnConn As New SqlConnection
        cnConn.ConnectionString = CitraConnection

        Dim cmdBuscar As New SqlCommand
        cmdBuscar.Connection = cnConn
        cmdBuscar.CommandText = "SELECT CVALORCL01 FROM MGW10020 WHERE CIDCLASI01=25"

        Dim rdBuscar As SqlDataReader

        cnConn.Open()
        rdBuscar = cmdBuscar.ExecuteReader

        lstFamilia.Items.Add("Todas")

        Do While rdBuscar.Read
            lstFamilia.Items.Add(rdBuscar("CVALORCL01"))
        Loop

        lstFamilia.SelectedIndex = 0

    End Sub
 
    Sub AbreSDK()
        'Carga Libreria
        frmMain.statusActividad.Text = "Cargando librerias..."
        Application.DoEvents()

        Dim RutaDLL As String = ""
        Dim cCodigoBol As String = ""
        Dim cCodigoASE As String = ""

        Try

            Dim key As Microsoft.Win32.RegistryKey
            key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(gsRegPath)
            RutaDLL = CType(key.GetValue("RutaDLL"), String)
            cCodigoBol = CType(key.GetValue("cCodigoBol"), String)
            cCodigoASE = CType(key.GetValue("cCodigoASE"), String)
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Aviso")
            Exit Sub
            MsgBox("Se interrumpio el proceso", MsgBoxStyle.Exclamation, "Aviso")
        End Try

        'Carga SDK
        Dim lError As Integer
        frmMain.statusActividad.Text = "Cargando SDK de Adminpaq..."
        Application.DoEvents()

        Try
            Directory.SetCurrentDirectory(RutaDLL)
            lError = SDK_AdminPAQ.fInicializaSDK
            If lError <> 0 Then
                MensajeError(lError)
                End
            End If
        Catch ex As Exception
            frmMain.statusActividad.Text = ex.Message
            MsgBox("No se pudo cargar el SDK de AdminPAQ", MsgBoxStyle.Exclamation, "Aviso")
            Exit Sub
        End Try

        'Abre Empresa de AdminPAQ
        frmMain.statusActividad.Text = "Abriendo empresa de AdminPAQ..."
        Application.DoEvents()

        Try
            lError = SDK_AdminPAQ.fAbreEmpresa(Comercial)
            If lError <> 0 Then
                MensajeError(lError)
            End If
        Catch ex As Exception
            MsgBox("No se pudo abrir la empresa de AdminPAQ", MsgBoxStyle.Exclamation, "Aviso")
            Exit Sub
        End Try

        frmMain.statusActividad.Text = "Listo"
        Application.DoEvents()
    End Sub
    Sub CargaEjercicios()
        'lstEjercicio.Items.Clear()

        Dim cnConn As New SqlConnection
        cnConn.ConnectionString = CitraConnection

        Dim cmdBuscar As New SqlCommand
        cmdBuscar.Connection = cnConn
        cmdBuscar.CommandText = "SELECT CEJERCICIO FROM MGW10031"

        Dim rdBuscar As SqlDataReader

        cnConn.Open()
        rdBuscar = cmdBuscar.ExecuteReader

        Do While rdBuscar.Read
            '   lstEjercicio.Items.Add(rdBuscar("CEJERCICIO"))
        Loop
    End Sub
    Sub CargaProductos()
        dgProductos.Rows.Clear()

        Dim cnConn As New SqlConnection
        cnConn.ConnectionString = CitraConnection

        Dim cmdBuscar As New SqlCommand
        cmdBuscar.Connection = cnConn

        Dim SqlStr As String = ""

        If lstFamilia.Text = "Todas" Then
            SqlStr = "SELECT CCODIGOP01,CNOMBREP01 FROM MGW10005 P INNER JOIN MGW10020 C ON P.CIDVALOR01=C.CIDVALOR01 WHERE CTIPOPRO01=1 AND CSTATUSP01=1 AND CVALORCL01<>'(Ninguna)'"
        Else
            SqlStr = "SELECT CCODIGOP01,CNOMBREP01 FROM MGW10005 P INNER JOIN MGW10020 C ON P.CIDVALOR01=C.CIDVALOR01 WHERE CTIPOPRO01=1 AND CSTATUSP01=1 AND CVALORCL01='" & lstFamilia.Text & "'"
        End If


        cmdBuscar.CommandText = SqlStr

        Dim rdBuscar As SqlDataReader

        cnConn.Open()
        rdBuscar = cmdBuscar.ExecuteReader

        Do While rdBuscar.Read
            dgProductos.Rows.Add(rdBuscar("CCODIGOP01"), rdBuscar("CNOMBREP01"))
        Loop

    End Sub
    Sub GeneraExistencia()

        Dim CodigoAlmacen As String = BuscarStrDatoCitra("SELECT CCODIGOA01 FROM MGW10003 WHERE CNOMBREA01='" & lstAlmacen.Text & "'")
       
        Dim FechaActual As Date = Now()

        Dim aAnio As String = FechaActual.Year
        Dim aDia As String = FechaActual.Day
        Dim aMes As String = FechaActual.Month
        Dim aExistencia As Double = 0
        Dim CodigoProducto As String = ""
        Dim lError As Long

        If FechaActual.Day < 10 Then
            aDia = "0" & aDia
        End If

        If FechaActual.Month < 10 Then
            aMes = "0" & aMes
        End If

        Dim Total As Integer = dgProductos.Rows.Count
        Dim Diferencia As Double = 0

        For i = 0 To dgProductos.Rows.Count - 1
            CodigoProducto = dgProductos.Rows(i).Cells(0).Value
            Try
                lError = SDK_AdminPAQ.fRegresaExistencia(CodigoProducto, CodigoAlmacen, aAnio, aMes, aDia, aExistencia)
            Catch ex As Exception

            End Try

            dgProductos.Rows(i).Cells(2).Value = aExistencia
            MaximosMinimos(CodigoProducto, CodigoAlmacen, i)
            If dgProductos.Rows(i).Cells(3).Value > 0 Then
                dgProductos.Rows(i).Cells(5).Value = (dgProductos.Rows(i).Cells(3).Value + dgProductos.Rows(i).Cells(4).Value) / 2
                If dgProductos.Rows(i).Cells(2).Value <= dgProductos.Rows(i).Cells(4).Value Then
                    Diferencia = dgProductos.Rows(i).Cells(5).Value - dgProductos.Rows(i).Cells(2).Value
                    If Diferencia > 0 Then
                        dgProductos.Rows(i).Cells(6).Value = Diferencia
                    Else
                        dgProductos.Rows(i).Cells(6).Value = 0
                    End If
                Else
                    dgProductos.Rows(i).Cells(6).Value = 0
                End If
            Else
                dgProductos.Rows(i).Cells(5).Value = 0
                dgProductos.Rows(i).Cells(6).Value = 0
            End If

            If dgProductos.Rows(i).Cells(2).Value < dgProductos.Rows(i).Cells(4).Value Then
                dgProductos.Rows(i).Cells(7).Value = "Por debajo del mínimo requerido"
            ElseIf dgProductos.Rows(i).Cells(2).Value = dgProductos.Rows(i).Cells(4).Value Then
                dgProductos.Rows(i).Cells(7).Value = "Existencia Mínima"
            ElseIf dgProductos.Rows(i).Cells(2).Value > dgProductos.Rows(i).Cells(3).Value Then
                dgProductos.Rows(i).Cells(7).Value = "Por encima del máximo requerido"
            ElseIf dgProductos.Rows(i).Cells(2).Value = dgProductos.Rows(i).Cells(3).Value Then
                dgProductos.Rows(i).Cells(7).Value = "Existencia Máxima"
            Else
                dgProductos.Rows(i).Cells(7).Value = "Dentro de lo necesario"
            End If

            aExistencia = 0
            Application.DoEvents()

            frmMain.statusActividad.Text = "Calculando " & i + 1 & " productos de " & Total

            If dgProductos.Rows(i).Cells(6).Value > 0 Then
                dgProductos.Rows(i).Cells(8).Value = True
            Else
                dgProductos.Rows(i).Cells(8).Value = False
            End If

        Next

        Dim Respuesta As Integer = MsgBox("¿Deseas eliminar de la lista los productos que no necesitan ser surtidos?", MsgBoxStyle.YesNo, "Aviso")


        If Respuesta = 6 Then
            For i = 0 To dgProductos.Rows.Count
                EliminarCeros()
            Next
        End If

       
        frmMain.statusActividad.Text = "Listo"





    End Sub
    Sub Guardar()
        '´PRIMERO ELIMINA EL REGISTRO ANTERIOR
        Call SetSqlCitra("DELETE FROM PEDIDOS WHERE IDPEDIDO=" & txtFolio.Text)
        Call SetSqlCitra("DELETE FROM PEDIDOSDETALLE WHERE IDPEDIDO=" & txtFolio.Text)

        Dim Pedido As New clsPedidos
        Pedido.Almacen = lstAlmacen.Text
        Pedido.Familia = lstFamilia.Text
        Pedido.FechaCalculo = FechaCalculo
        Pedido.Usuario = UsuarioActivo
        Pedido.AdminPAQ = 0
        Pedido.Insertar()

        Dim Detalle As New clsPedidosDetalle
        Detalle.IdPedido = Pedido.IdPedido
        For i = 0 To dgProductos.Rows.Count - 1
            Detalle.Codigo = dgProductos.Rows(i).Cells(0).Value
            Detalle.Producto = dgProductos.Rows(i).Cells(1).Value
            Detalle.Existencia = dgProductos.Rows(i).Cells(2).Value
            Detalle.Maximo = dgProductos.Rows(i).Cells(3).Value
            Detalle.Minimo = dgProductos.Rows(i).Cells(4).Value
            Detalle.Media = dgProductos.Rows(i).Cells(5).Value
            Detalle.Pedir = dgProductos.Rows(i).Cells(6).Value
            Detalle.Observaciones = dgProductos.Rows(i).Cells(7).Value
            If dgProductos.Rows(i).Cells(8).EditedFormattedValue = True Then
                Detalle.Enviar = 1
            Else
                Detalle.Enviar = 0
            End If
            Detalle.Insertar()
        Next

        EnviarAdminPAQ(Pedido.IdPedido)

        dgProductos.Rows.Clear()


    End Sub
    Sub EnviarAdminPAQ(ByVal IdPedido As Integer)
        If Me.dgProductos.Rows.Count = 0 Then
            Exit Sub
        End If
        Dim AUX As String = dgProductos.Rows(0).Cells(0).Value
        If AUX = "" Then
            Exit Sub
        End If
        Dim Orden As Boolean
        Dim lRet As Long
        Dim lStrValor As String
        Dim lCodConcepto As String = BuscarStrDatoCitra("SELECT CODIGO FROM PEDIDOSCONCEPTO")
        Dim lNumMovto As Integer
        Dim lFechaDoc As String
        Dim lFechaVenc As String
        Dim lFechaEntr As String
        Dim serie As String = ""
        Dim folio As Double
        Dim Existencia As Double = 0
        Dim i As Integer
        Dim fecha As Date = Now()
        Dim lfecha As String
        Dim ccodigocliente As String = BuscarStrDatoCitra("SELECT CODIGO FROM PEDIDOSPROVEEDOR")
        Dim lIdDocumento As New Microsoft.VisualBasic.Compatibility.VB6.FixedLengthString(SDK_AdminPAQ.kLongIdDocum)
        lIdDocumento.Value = Space(SDK_AdminPAQ.kLongIdDocum)
        Orden = False
        Dim IDDOCUMENTO As Integer

        Dim IdProducto As Integer = 0
        Dim IdAlmacen As Integer = 0
        Dim Costo As Double = 0




        lfecha = Format(fecha.Month, "00") & "/"
        lfecha = lfecha & Format(fecha.Day, "00") & "/"
        lfecha = lfecha & Format(fecha.Year, "0000")

        ' Inserta registro de documento
        lRet = SDK_AdminPAQ.fInsertarDocumento()
        If lRet <> 0 Then
            MensajeError(lRet)
            MsgBox("Insertando documento")
            Exit Sub
        End If
        ' Actualiza los campos del documento
        lFechaDoc = lfecha
        lFechaVenc = lFechaDoc
        lFechaEntr = lFechaDoc

        'Guarda fecha
        lRet = SDK_AdminPAQ.fSetDatoDocumento("cFecha", fecha)
        If lRet <> 0 Then
            MensajeError(lRet)
            MsgBox("Insertando fecha")
            BorraYTermina(0)
            Exit Sub
        End If

        ' IdConceptoDocumento
        lStrValor = lCodConcepto
        lRet = SDK_AdminPAQ.fSetDatoDocumento("cCodigoConcepto", lStrValor)
        If lRet <> 0 Then
            MensajeError(lRet)
            MsgBox("Insertando codigo concepto " & lStrValor)
            BorraYTermina(0)
            Exit Sub
        End If

        lRet = SDK_AdminPAQ.fSiguienteFolio(lCodConcepto, serie, folio)
        If lRet <> 0 Then
            MensajeError(lRet)
            MsgBox("Buscando folio y serie")
            BorraYTermina(0)
            Exit Sub
        End If

        serie = IdPedido
        lRet = SDK_AdminPAQ.fSetDatoDocumento("cSerieDocumento", serie)
        If lRet <> 0 Then
            MensajeError(lRet)
            MsgBox("Insertando serie")
            BorraYTermina(0)
            Exit Sub
        End If

        ' Folio
        'lStrValor = Mantenimiento.IdMantenimiento
        lRet = SDK_AdminPAQ.fSetDatoDocumento("cFolio", lStrValor)
        If lRet <> 0 Then
            MensajeError(lRet)
            MsgBox("Insertando folio")
            BorraYTermina(0)
            Exit Sub
        End If

        '_________________________________________________________________________________________________________________

        ' CodigoCteProv
        lStrValor = ccodigocliente
        If Trim(lStrValor) = "" Then
            MsgBox("Hubo un error al validar el codigo del cliente." & Chr(10) & Chr(10) & "Error no.: " & Trim("120501") & Chr(10) & "El código del Cliente/Proveedor no existe.", vbExclamation + vbOKOnly, "Error")
            BorraYTermina(0)
            Exit Sub
        End If

        lRet = SDK_AdminPAQ.fSetDatoDocumento("cCodigoCteProv", lStrValor)
        If lRet <> 0 Then
            MensajeError(lRet)
            MsgBox("Insertando codigo del cliente")
            BorraYTermina(0)
            Exit Sub
        End If

        ' RazonSocial
        lStrValor = BuscarStrDatoCitra("SELECT NOMBRE FROM PEDIDOSPROVEEDOR")
        lRet = SDK_AdminPAQ.fSetDatoDocumento("cRazonSocial", lStrValor)
        If lRet <> 0 Then
            MensajeError(lRet)
            MsgBox("Insertando razon social")
            BorraYTermina(0)
            Exit Sub
        End If

        'RFC
        lStrValor = ""
        lRet = SDK_AdminPAQ.fSetDatoDocumento("cRFC", lStrValor)
        If lRet <> 0 Then
            MensajeError(lRet)
            MsgBox("Insertando RFC")
            BorraYTermina(0)
            Exit Sub
        End If

        ' CodigoAgente
        lStrValor = Trim(UsuarioActivo)
        lRet = SDK_AdminPAQ.fSetDatoDocumento("cReferencia", lStrValor)
        If lRet <> 0 Then
            MensajeError(lRet)
            MsgBox("Insertando codigo agente")
            BorraYTermina(0)
            Exit Sub
        End If

        ' Indicar al SDK que el documento va a tomar la dirección fiscal y de envio del cliente
        lStrValor = "1"
        lRet = SDK_AdminPAQ.fSetDatoDocumento("cConDireccionFiscal", lStrValor)

        'lRet = fSetDatoDocumento("cImporte01", Mantenimiento.IdMantenimiento)

        lRet = SDK_AdminPAQ.fSetDatoDocumento("cFechaVencimiento", lfecha)
        If lRet <> 0 Then
            MensajeError(lRet)
            MsgBox("Insertando fecha vencimiento")
            BorraYTermina(0)
            Exit Sub
        End If

        lRet = SDK_AdminPAQ.fSetDatoDocumento("cFechaEntregaRecepcion", lfecha)
        If lRet <> 0 Then
            MensajeError(lRet)
            MsgBox("Insertando fecha entrega recepcion")
            BorraYTermina(0)
            Exit Sub
        End If

        ' N.D.1584 hva se cambio de "Moneda" a "IdMoneda" para que no lea el nombre sino el id

        lStrValor = 1
        lRet = SDK_AdminPAQ.fSetDatoDocumento("cIdMoneda", lStrValor)
        If lRet <> 0 Then
            MensajeError(lRet)
            MsgBox("Insertando id moneda")
            BorraYTermina(0)
            Exit Sub
        End If

        lStrValor = 1
        lRet = SDK_AdminPAQ.fSetDatoDocumento("cTipoCambio", lStrValor)
        If lRet <> 0 Then
            MensajeError(lRet)
            MsgBox("Insertando tipo de cambio")
            BorraYTermina(0)
            Exit Sub
        End If


        '_________________________________________________________________________________________________________________
        ' otra vez la fecha del documento, la fecha de entrega recepcion
        lRet = SDK_AdminPAQ.fSetDatoDocumento("cFecha", lfecha)
        If lRet <> 0 Then
            MensajeError(lRet)
            MsgBox("Insertando fecha otravez")
            BorraYTermina(0)
            Exit Sub
        End If
        lRet = SDK_AdminPAQ.fSetDatoDocumento("cFechaVencimiento", lfecha)
        If lRet <> 0 Then
            MensajeError(lRet)
            MsgBox("Insertando fecha vencimiento otravez")
            BorraYTermina(0)
            Exit Sub
        End If
        lRet = SDK_AdminPAQ.fSetDatoDocumento("cFechaEntregaRecepcion", lfecha)
        If lRet <> 0 Then
            MensajeError(lRet)
            MsgBox("Insertando fecha recepcion otravez")
            BorraYTermina(0)
            Exit Sub
        End If

        lRet = SDK_AdminPAQ.fSetDatoDocumento("cFechaEntregaRecepcion", lfecha)
        If lRet <> 0 Then
            MensajeError(lRet)
            MsgBox("Insertando fecha recepcion otravez")
            BorraYTermina(0)
            Exit Sub
        End If
        '_________________________________________________________________________________________________________________
        ' Guarda los datos del documento
        lRet = SDK_AdminPAQ.fGuardaDocumento()
        If lRet <> 0 Then
            MensajeError(lRet)
            MsgBox("Guardando documento")
            BorraYTermina(0)
            Exit Sub
        End If

        '_________________________________________________________________________________________________________________
        ' Obtiene el IdDocumento
        lStrValor = SDK_AdminPAQ.fLeeDatoDocumento("cidDocum01", lIdDocumento.Value, 11)
        IDDOCUMENTO = CDbl(lIdDocumento.Value.ToString.Trim)
        If lStrValor <> 0 Then
            MensajeError(lStrValor)
            MsgBox("Buscando id del documento")
            SDK_AdminPAQ.fBorraDocumento()
            Exit Sub
        End If

        '_________________________________________________________________________________________________________________
        ' Guarda los renglones
        lNumMovto = 0
        For i = 0 To Me.dgProductos.Rows.Count - 1
            Existencia = 0
            Orden = False
            dgProductos.CurrentCell = dgProductos.Rows(i).Cells(0)
            Application.DoEvents()
            ' Codigo del Producto
            lStrValor = Me.dgProductos.Rows(i).Cells(0).Value
            If lStrValor <> "" Then
                If Len(Trim(lStrValor)) > 0 Then
                    lRet = SDK_AdminPAQ.fInsertarMovimiento()
                    If lRet <> 0 Then
                        MensajeError(lRet)
                        MsgBox("Insertando un movimiento")
                        SDK_AdminPAQ.fBorraDocumento()
                        Exit Sub
                    End If

                    ' Despues de insertar el movimiento cualquier error que ocurra entre esta insercion y el guardado
                    ' debera de llamar al metodo fSDK_CancelarCambioMovimientos para que se deshaga la insercion

                    ' Id del Documento
                    lRet = SDK_AdminPAQ.fSetDatoMovimiento("cIdDocumento", lIdDocumento.Value)
                    If lRet <> 0 Then
                        MensajeError(lRet)
                        MsgBox("Insertando id del documento en movimiento " & lIdDocumento.Value)
                        BorraYTermina(1)
                        Exit Sub
                    End If

                    ' Numero del Movimiento
                    lNumMovto = lNumMovto + 1
                    lStrValor = Trim(Str(lNumMovto * 100))
                    lRet = SDK_AdminPAQ.fSetDatoMovimiento("cNumeroMovimiento", lStrValor)
                    If lRet <> 0 Then
                        MensajeError(lRet)
                        MsgBox("Insertando numero de movimiento")
                        BorraYTermina(1)
                        Exit Sub
                    End If

                    ' Codigo del Producto
                    lStrValor = Trim(Me.dgProductos.Rows(i).Cells(0).Value.ToString())
                    IdProducto = BuscarIntDatoCitra("SELECT cIdProdu01 FROM MGW10005 WHERE cCodigoP01='" & lStrValor & "'")
                    lRet = SDK_AdminPAQ.fSetDatoMovimiento("cCodigoProducto", lStrValor)
                    If lRet <> 0 Then
                        MensajeError(lRet)
                        MsgBox("Insertando codigo del producto")
                        BorraYTermina(1)
                        Exit Sub
                    End If

                    ' Codigo del Almacen
                    lStrValor = BuscarStrDatoCitra("SELECT CCODIGOA01 FROM MGW10003 WHERE CNOMBREA01='" & lstAlmacen.Text & "'")
                    IdAlmacen = BuscarIntDatoCitra("SELECT CIDALMACEN FROM MGW10003 WHERE CNOMBREA01='" & lStrValor & "'")
                    lRet = SDK_AdminPAQ.fSetDatoMovimiento("cCodigoAlmacen", lStrValor)
                    If lRet <> 0 Then
                        MensajeError(lRet)
                        MsgBox("Insertando codigo del almacen")
                        BorraYTermina(1)
                        Exit Sub
                    End If

                    ' Unidades
                    lStrValor = Trim(Me.dgProductos.Rows(i).Cells(6).Value.ToString())
                    lRet = SDK_AdminPAQ.fSetDatoMovimiento("cUnidades", lStrValor)
                    If lRet <> 0 Then
                        MensajeError(lRet)
                        MsgBox("Insertando unidades del movimiento")
                        BorraYTermina(1)
                        Exit Sub
                    End If

                    Costo = BuscarDblDatoCitra("SELECT cUltimoC01 FROM MGW10017 WHERE cIdAlmacen=" & IdAlmacen & " AND cIdProdu01=" & IdProducto & " ORDER BY cIdCostoH DESC")
                    ' Precio
                    lStrValor = Costo
                    lRet = SDK_AdminPAQ.fSetDatoMovimiento("cPrecio", lStrValor)
                    If lRet <> 0 Then
                        MensajeError(lRet)
                        MsgBox("Insertando precio")
                        BorraYTermina(1)
                        Exit Sub
                    End If

                    ' N.D.3535 El Neto se calcula en el SDK de AdminPAQ

                    ' Descuento 1
                    ' Descuento 1
                    lStrValor = 0
                    lRet = SDK_AdminPAQ.fSetDatoMovimiento("cDescuento1", lStrValor)
                    If lRet <> 0 Then
                        MensajeError(lRet)
                        MsgBox("Insertando descuento 1")
                        BorraYTermina(1)
                        Exit Sub
                    End If
                    ' Descuento 2
                    lStrValor = 0
                    lRet = SDK_AdminPAQ.fSetDatoMovimiento("cDescuento2", lStrValor)
                    If lRet <> 0 Then
                        MensajeError(lRet)
                        MsgBox("Insertando descuento 2")
                        BorraYTermina(1)
                        Exit Sub
                    End If
                    ' Impuesto 1
                    lStrValor = 0
                    lRet = SDK_AdminPAQ.fSetDatoMovimiento("cImpuesto1", lStrValor)
                    If lRet <> 0 Then
                        MensajeError(lRet)
                        MsgBox("Insertando impuesto 1")
                        BorraYTermina(1)
                        Exit Sub
                    End If
                    ' Impuesto 2
                    lStrValor = 0
                    lRet = SDK_AdminPAQ.fSetDatoMovimiento("cImpuesto2", lStrValor)
                    If lRet <> 0 Then
                        MensajeError(lRet)
                        MsgBox("Insertando impuesto 2")
                        BorraYTermina(1)
                        Exit Sub
                    End If

                    ' Guarda los datos del movimiento
                    lRet = SDK_AdminPAQ.fGuardaMovimiento()
                    If lRet <> 0 Then
                        MensajeError(lRet)
                        MsgBox("Guardando movimiento")
                        BorraYTermina(1)
                        Exit Sub
                    End If

                End If
            End If
        Next
        If lNumMovto = 0 Then
            BorraYTermina(1)
        End If
    End Sub
    Private Sub BorraYTermina(ByVal aTipo As Integer)

        If aTipo = 1 Then
            SDK_AdminPAQ.fCancelaCambiosMovimiento()
            SDK_AdminPAQ.fBorraDocumento()
        Else
            SDK_AdminPAQ.fCancelarModificacionDocumento()

        End If
        'fCierraEmpresa()
        'fTerminaSDK()
    End Sub

    Sub EliminarCeros()
        Dim Elimino As Boolean = False
        Dim Pedir As Double = 0

        Try
            For i = 0 To dgProductos.Rows.Count - 1
                Pedir = dgProductos.Rows(i).Cells(6).Value
                If Pedir = 0 Then
                    dgProductos.Rows.RemoveAt(i)
                    Elimino = True
                End If
                If Elimino = True Then
                    EliminarCeros()
                End If
            Next
        Catch ex As Exception

        End Try
       
    End Sub
    Sub MaximosMinimos(ByVal CodigoProducto As String, ByVal CodigoAlmacen As String, ByVal Fila As Integer)
        Dim cnConn As New SqlConnection
        cnConn.ConnectionString = CitraConnection

        Dim cmdBuscar As New SqlCommand
        cmdBuscar.Connection = cnConn
        cmdBuscar.CommandText = "SELECT M.CEXISTEN01 AS MINIMO,M.CEXISTEN02 AS MAXIMO FROM MGW10016 M INNER JOIN MGW10005 P ON M.CIDPRODU01=P.CIDPRODU01 INNER JOIN MGW10003 A ON M.CIDALMACEN=A.CIDALMACEN WHERE CCODIGOA01='" & CodigoAlmacen & "' AND CCODIGOP01='" & CodigoProducto & "' ORDER BY CCODIGOP01"

        Dim rdBuscar As SqlDataReader

        cnConn.Open()
        rdBuscar = cmdBuscar.ExecuteReader

        Dim cont As Integer = 0
        Do While rdBuscar.Read
            dgProductos.Rows(Fila).Cells(3).Value = rdBuscar("Maximo")
            dgProductos.Rows(Fila).Cells(4).Value = rdBuscar("Minimo")
            cont = cont + 1
        Loop

        If cont = 0 Then
            dgProductos.Rows(Fila).Cells(3).Value = 0
            dgProductos.Rows(Fila).Cells(4).Value = 0
        End If

        cnConn.Dispose()
        cnConn.Close()
        SqlConnection.ClearAllPools()

    End Sub

    Private Sub ToolStripButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton2.Click
        If lstAlmacen.Text = "Seleccionar Almacén..." Then
            MsgBox("Debes indicar el almacén", MsgBoxStyle.Exclamation, "Aviso")
        End If
        txtFolio.Text = 0
        txtAdminPAQ.Text = 0

        CargaProductos()
        GeneraExistencia()
        FechaCalculo = Now()


    End Sub

    Private Sub ToolStripButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        For i = dgProductos.Rows.Count - 1 To 0
            If dgProductos.Rows(i).Cells(6).Value = 0 Then
                dgProductos.Rows.RemoveAt(i)
            End If
        Next i
    End Sub

    Private Sub lstAlmacen_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstAlmacen.SelectedIndexChanged
        If lstAlmacen.Text = "Seleccionar Almacén..." Then
            lstFamilia.Enabled = False
            lstFamilia.SelectedIndex = 0
        Else
            lstFamilia.Enabled = True

        End If
    End Sub

    Private Sub lstFamilia_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstFamilia.SelectedIndexChanged
        dgProductos.Rows.Clear()

    End Sub

    Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click
        Close()

    End Sub

    Private Sub EliminarProductoDeLaListaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EliminarProductoDeLaListaToolStripMenuItem.Click
        dgProductos.Rows.RemoveAt(dgProductos.CurrentRow.Index)
    End Sub

    Private Sub ToolStripButton3_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton3.Click

        Guardar()
        txtFolio.Text = 0
        dgProductos.Rows.Clear()


    End Sub

    Private Sub ToolStripButton4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton4.Click
        frmPedidosConfig.ShowDialog()

    End Sub
End Class